1. Technical Field
The present invention relates in general to apparatus and methods in a logic simulator machine. More particularly, the present invention provides apparatus and methods in a logic simulator machine for efficiently overriding array net values.
2. Description of Related Art
Logic circuits in computer systems and related products have become increasingly large and complex. As a result, the initial design and fabrication have become increasingly more lengthy and costly. Although many efforts are made to eliminate any errors, it is no longer feasible to test the design only after the circuit has been fabricated. Accordingly, in recent years there has been increasing effort in design verification using computer modeling of the logic circuits before the circuit is actually embodied in hardware. The errors being referred to here are those produced by the interaction of logic circuits which are assumed to be operating correctly as separate entities but which are producing poor or incorrect results when operating together.
Logic technologies such as very large scale integrated circuits provide significant improvements in cost, performance, and reliability. However, they have disadvantages in that their fault diagnosis is more difficult than previous technologies and their engineering rework cycles needed to correct faults in logic design are greatly lengthened. These disadvantages exact great economic penalties for design errors and omissions and place a great emphasis on the goal of completely verifying designs in advance of engineering models.
Simulation has become a central part of verification methodology for circuit design. Applications span a wide spectrum, from early specifications to explore different architectural possibilities to the final stages of manufacturing test generation and fault coverage evaluation. For a long time, computer programs for use on a general purpose computer have been known which simulate such logic circuits. In these systems, the software program is run on any suitable general purpose computer. A model of the logic design is created. Test software programs may then be developed and executed using the model to analyze the operation of the logic design. However, as the number of gates on a single chip have reached into the range of hundreds of thousands to millions, these purely software simulators have required excessive amounts of computer time.
One approach used to overcome the excessive resource problem for full system simulation has been to build a hardware model of the design, essentially by hand wiring circuit boards with discrete components. Once wired, the circuit very quickly can emulate the desired circuit. A hardware emulator is a device which physically takes the place of the device to be emulated. A logic simulator machine, described below, could also act as a hardware emulator when the logic simulator machine is executing a model of the design if the appropriate wiring is attached to the logic simulator machine which will permit it to be physically coupled to other devices. However, a hardware model itself is costly and time consuming to build.
Another approach, which has found widespread acceptance, is a specialized logic simulator machine. These logic simulator machines as also sometimes called hardware accelerators. There are numerous logic simulation machines in existence for simulation, with different capacity, performance, and applications. These logic simulation machines range from small systems to significantly larger machines for simulating millions of gates. The term xe2x80x9clogic simulator machinexe2x80x9d as used herein will mean a hardware-based machine, and not a software-based simulation engine as described above.
One such logic simulator machine is described by U.S. Pat. No. 4,306,286 issued Dec. 15, 1981 to Cocke et al. This patent is herein incorporated by reference. The purpose of the logic simulator machine is to detect design errors in a simulated logic and enable the logic designer to correct the errors before the manufacture of the design.
The logic simulator machine described by Cocke et al. comprises a plurality of parallel basic processors which are interconnected through an inter-processor switch. The inter-processor switch provides communication not only among the basic processors which are the computing engine of the logic simulator machine, each simulating the individual gates of a portion of a logic model in parallel, but also between them and a control processor which provides overall control and input/output facilities of the logic simulator machine through a host computer to which the control processor is attached. Each basic processor contains the current state information for only the set of gates that is being simulated by that processor. When a basic processor simulates a gate whose input includes a connection to the output of a gate being simulated by a different processor, the state information for the gate is transferred over the inter-processor switch.
A representation of a logic design is first created in which Boolean gates, such as AND or OR gates, are used. A model of this representation is then built which may then be executed by the logic simulator machine. Test routines to test the design then may be executed using the model of the design which is being executed by the logic simulator machine.
In order to test a circuit design using a logic simulator machine, a model of the circuit is built. A test routine then may be executed using the model being executed by the logic simulator machine.
It may be useful when testing a circuit design to override one or more nets which are included in an array included in the logic design while the test routine is being executed. It is more difficult to override an array net because the logic which drives the array drives all of the nets of the array, and not just a specific net. Therefore, it is difficult to modify the model to only override only the single net or nets that are required to be overridden.
In the prior art when a software simulator is used, a test engineer could patch the model to force a particular net to be equal to an override value.
Therefore, a need exists for a method and system for efficiently overriding an array net during execution of a test routine by a logic simulator machine.
A method and system are described for efficiently overriding a value of a net in an array during execution of a test routine. The logic simulator machine is simulating a logic design which includes the array and multiple nets. A current value of the net is set equal to an override value. A normal update to the array is permitted to occur during execution of a single cycle of the test routine. A determination is then made regarding whether the override value is still stored in the array for the particular net. If the override value is not still stored in the array for this net, normal updates to the array are prohibited during a single cycle of the test routine. During this cycle of the test routine, the override value is then again stored in the net as the current value of the net. This override value is thus made available to be read during this cycle of the test routine while writes to the array are disabled. Normal updates are then again permitted to occur to the array in subsequent cycles of the test routine.
The above as well as additional objectives, features, and advantages of the present invention will become apparent in the following detailed written description.